@echo off
echo ================================
echo 安装考试系统为Windows服务
echo ================================

:: 设置变量
set PROJECT_DIR=%~dp0
set BACKEND_DIR=%PROJECT_DIR%backend

:: 检查管理员权限
net session >nul 2>&1
if errorlevel 1 (
    echo 错误: 需要管理员权限才能安装Windows服务
    echo 请右键选择"以管理员身份运行"
    pause
    exit /b 1
)

echo 安装node-windows包...
cd /d "%BACKEND_DIR%"
call npm install node-windows --save-dev
if errorlevel 1 (
    echo 错误: node-windows安装失败
    pause
    exit /b 1
)

echo 创建服务安装脚本...
(
echo const Service = require('node-windows'^).Service;
echo const path = require('path'^);
echo.
echo // 创建新的服务对象
echo const svc = new Service({
echo   name: 'ExamSystemBackend',
echo   description: '考试管理系统后端服务',
echo   script: path.join(__dirname, 'src', 'server.ts'^),
echo   nodeOptions: [
echo     '--require', 'ts-node/register',
echo     '--require', 'tsconfig-paths/register'
echo   ],
echo   env: {
echo     name: 'NODE_ENV',
echo     value: 'production'
echo   }
echo }^);
echo.
echo // 监听安装事件
echo svc.on('install', function(^) {
echo   console.log('服务安装成功');
echo   svc.start(^);
echo }^);
echo.
echo svc.on('alreadyinstalled', function(^) {
echo   console.log('服务已经安装');
echo }^);
echo.
echo // 安装服务
echo svc.install(^);
) > install-service.js

echo 安装Windows服务...
node install-service.js

echo.
echo ================================
echo Windows服务安装完成！
echo ================================
echo 服务名称: ExamSystemBackend
echo 服务状态: 已启动
echo.
echo 管理命令:
echo   启动服务: net start ExamSystemBackend
echo   停止服务: net stop ExamSystemBackend
echo   查看状态: sc query ExamSystemBackend
echo.
pause
